package com.smart.community.user.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 用户物业公司关联实体
 * 
 * 注意：此表不使用软删除，直接使用物理删除
 * 原因：用户物业公司关联表是中间表，不需要软删除功能
 * 设计原则：根据"智慧社区微服务架构总览.md"中的关联表设计原则
 * 
 * @author Wu.Liang
 * @since 2025-07-05
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("sc_user_property_company")
public class UserPropertyCompany {

    /**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 用户ID
     */
    @TableField("user_id")
    private Long userId;

    /**
     * 物业公司ID
     */
    @TableField("property_company_id")
    private Long propertyCompanyId;

    /**
     * 职位
     */
    @TableField("position")
    private String position;

    /**
     * 部门
     */
    @TableField("department")
    private String department;

    /**
     * 员工编号
     */
    @TableField("employee_no")
    private String employeeNo;

    /**
     * 入职日期
     */
    @TableField("join_date")
    private LocalDate joinDate;

    /**
     * 状态：0-离职，1-在职，2-待入职
     */
    @TableField("status")
    private Integer status;

    /**
     * 创建人
     */
    @TableField(value = "create_by", fill = FieldFill.INSERT)
    private Long createBy;

    /**
     * 创建时间
     */
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /**
     * 更新人
     */
    @TableField(value = "update_by", fill = FieldFill.INSERT_UPDATE)
    private Long updateBy;

    /**
     * 更新时间
     */
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;

    /**
     * 版本号
     */
    @TableField("version")
    @Version
    private Integer version;

    /**
     * 备注
     */
    @TableField("remark")
    private String remark;
} 